Certain data resource systems include data and associated applications that are developed over extended periods of time (e.g., decades). For example, various enterprise resource planning (i.e., ERP) systems utilize legacy based systems (e.g., MFG/PRO, SAP, etc.). Such legacy systems often include thousands of programs, many of which are in a programming language that may be used in a legacy system (e.g., Oracle, Progress, etc.). Many of these programs offer numerous functions (e.g., report, enquiry, and maintenance functions).
In some legacy systems, the purpose of the maintenance functions is to take data (e.g., through an interface), apply certain rules to the data (through business logic), and to then store the result in a database (persistence). Typically, each maintenance program performs all three of these functions without distinction, whether user driven or business document driven (i.e., EDI (electronic data interchange), XML).
With the current state of technological advances, it is often desirable for legacy systems to accept and interact with data from multiple interfaces (e.g., user entry, the Internet, EDI, XML, other ERP systems, etc.). In hindsight, the task of providing multiple interfaces to legacy systems could have been accomplished by separating the business logic from the interface during creation of each application or program. Such an approach could allow multiple interfaces to be exchanged seamlessly. Unfortunately, such an approach was typically not considered during the development of the library of applications included in legacy systems.
As such, existing legacy systems include thousands of programs including an intermingled user interface and business logic. In order to separate the user interface from the business logic, all of the existing legacy system applications could be rewritten using new coding techniques and using the most up-to-date technologies. Alternatively, each piece of code in the legacy system could be modified in order to manually remove the user interface and to replace the interface with input parameters.
Unfortunately, each of these alternatives is undesirable in that re-writing or modifying an existing legacy system code base is a very substantial undertaking.
As such, it would be desirable to provide an improved method for separating the user interface and business logic of legacy based system applications.